package main

import (
	"fmt"
	"strconv"
	"sync"
	"time"
)

//在使用协程时，如果主线程执行速度比协程快，那么主线程执行完毕，协程自动关闭，因此导致协程并未执行完毕。
//需要使用sync.WaitGroup进行线程等待，当协程执行完毕，主线程推出

var wg sync.WaitGroup

func t1() {
	for i:=1;i<=5;i++{
		fmt.Print("t1运行。。。"+strconv.Itoa(i), "\n")
		time.Sleep(time.Millisecond*200)
	}
	wg.Done()  //计数减1，直到执行完毕
}

func t2() {
	for i:=1;i<=5;i++{
		fmt.Print("t2运行。。。"+strconv.Itoa(i), "\n")
		time.Sleep(time.Millisecond*300)
	}
	wg.Done()  //计数减1，直到执行完毕
}

func main() {
	wg.Add(1)  // 协程计数加1,一个协程开启一个.如另一个t2协程，
	go t1()  // 开启了一个协程
	//wg.Add(1)
	go t2()  // 开启了一个协程
	for i:=1;i<=5;i++{
		fmt.Print("main运行。。。"+strconv.Itoa(i), "\n")
		time.Sleep(time.Millisecond*100)
	}
	wg.Wait()  //主线程等待
}